package com.xcc.eureka.feign.client;

import com.xcc.bean.User;
import com.xcc.eureka.feign.client.imp.BaseClientImp;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.*;

/**
 * @outhor Ren
 * @create 2019-03-01 22:58
 * 描述:
 */
// FeignClient 注解会去发现指定服务， 如下 feign 回去发现 eureka-client 服务。
// fallback 指向熔断实现类
@FeignClient(value = "eureka-client", fallback = BaseClientImp.class)
public interface BaseClient {

    /**
     * feign 接口类注意事项:
     * 传入字符参数请使用 @RequestParam 注解, feign 不会自动将参数名称与传入参数名称匹配,需要通过注解进行关联
     * 传入对象参数请使用 @RequestBody 注解, 注意: 接口传入对象时需要使用 @RequestBody 注解,不使用该注解可能得到 null 值.
     */
    // 引入需要调用的接口,
    @GetMapping("/test/getNumber")
    String test(@RequestParam("num") String num);

    @PostMapping(value = "/test/getObj")
    @ResponseBody
    User getObj(@RequestBody User user);
}
